﻿using DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DAO
{
    public class Q_DAOChiTietKhamBenh
    {
        /// <summary>
        /// Báo cáo phí khám bệnh đã thu
        /// </summary>
        /// <param name="ngay">Ngày cần xuất báo cáo</param>
        /// <returns></returns>
        public List<PhiTheoNgay> dsPhiKhamBenhTheoNgay(DateTime ngay)
        {
            List<PhiTheoNgay> dsPhiNgay = null;
            using(db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from ctkb in db.ChiTietKhamBenhs
                            join kb in db.KhamBenhs on ctkb.id_khambenh equals kb.id
                            where ctkb.ngay_thanh_toan == ngay.Date
                            group ctkb by kb.id_benhnhan into Phigroup
                            select new PhiTheoNgay
                            {
                                ID_BenhNhan = Phigroup.Key.Value,
                                TongTien = (decimal) Phigroup.Sum(value => value.tien_tam_ung)
                            };
                if (query == null)
                    return null;
                dsPhiNgay = query.ToList<PhiTheoNgay>();
            }
            return dsPhiNgay;
        }
        /// <summary>
        /// Thống kê phí khám bệnh theo tháng
        /// </summary>
        /// <param name="Thang">Tháng thống kê</param>
        /// <param name="Nam">Năm năm thống kê</param>
        /// <returns></returns>
        public List<ChiTheoThang> dsPhiKhamBenhTheoThang(int Thang, int Nam)
        {
            List<ChiTheoThang> dsPhiThang = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from phi in db.ChiTietKhamBenhs
                            where phi.ngay_thanh_toan.Value.Month == Thang && phi.ngay_thanh_toan.Value.Year == Nam
                            group phi by phi.ngay_thanh_toan into chigroup
                            select new ChiTheoThang
                            {
                                NgayChi = chigroup.Key.Value,
                                TongChiThang = (decimal)chigroup.Sum(chiItem => chiItem.tien_tam_ung)
                            };
                if (query == null)
                    return null;
                dsPhiThang = query.ToList<ChiTheoThang>();
                return dsPhiThang;
            }
        }
        /// <summary>
        /// Thống kê phí khám bệnh theo năm
        /// </summary>
        /// <param name="Nam">Năm năm thống kê</param>
        /// <returns></returns>
        public List<ChiTheoNam> dsPhiKhamBenhTheoNam(int Nam)
        {
            List<ChiTheoNam> dsPhiNam = null;
            using (db_nhakhoachauauDataContext db = new db_nhakhoachauauDataContext())
            {
                var query = from phi in db.ChiTietKhamBenhs
                            where phi.ngay_thanh_toan.Value.Year == Nam
                            group phi by phi.ngay_thanh_toan.Value.Month into chigroup
                            select new ChiTheoNam
                            {
                                Thang = chigroup.Key,
                                TongTien = (decimal)chigroup.Sum(chiItem => chiItem.tien_tam_ung)
                            };
                if (query == null)
                    return null;
                dsPhiNam = query.ToList<ChiTheoNam>();
            }
            return dsPhiNam;
        }
    }
}
